/**
 * 适用于框架的通用事件类型
 * 
 * 在子类中添加游戏专属的事件时， startIndex 从 100000 开始
 */
export module CommonEvent {
    /**游戏流程相关的事件，从 1,000 开始 */
    export enum DirectorEvent {
        startIndex = 1000,
        enterLobby,             //进入游戏大厅(首页)
        hideGameLobby,          //隐藏首页
        chooseLevelItem,        //选择关卡
        enterLevel,             //进入关卡场景
        exitLevel,              //退出关卡
        playerWin,              //关卡胜利
        playerLose,             //关卡失败
        pauseLevel,             //暂停游戏
        resumeLevel,            //恢复游戏
        matchPlayerFinish,      //玩家匹配完成
        chooseTrySkinFinish,    //选择试用皮肤结束
        enterFightScene,        //战斗过渡页动画完成后，进入战斗场景
        enterFightLoading,      //直接进入战斗过渡页面（用于组装完成后）
    }
    /**资源加载相关事件，从 2000 开始 */
    export enum LoadAssetEvent {
        startIndex = 2000,
        showProgress,           //显示资源加载进度
        hideProgress,           //隐藏资源加载进度
        updateProgress,         //更新资源加载进度
    }
    /**游戏数据相关事件，从 3000 开始 */
    export enum PlayerDataEvent {
        startIndex = 3000,
        dataLoaded,             //服务端数据拉取成功
        updatePlayerData,       //修改玩家数据
        playerDataChanged,      //玩家数据有变动
        trySkinEnd,             //皮肤试用结束
    }
    /**SDK相关事件，从 4,000 开始 */
    export enum SDKEvent {
        startIndex = 4000,
        inited,                 //初始化并从服务端获取数据完成
        showMsg,

        showVideo,              //激励视频

        showBanner,
        hideBanner,
        showBannerFinish,       //banner显示成功(相关代码已执行)
        showBannerSuccess,      //banner实例加载完成且已显示出来
        showBannerFail,         //banner显示失败
        bannerResize,           //底部广告栏尺寸更新，传递参数：广告栏顶部与屏幕底部的距离
        checkVisibleBanner,     //检测是否有可显示的banner，并根据结果执行相应的回调
        touchBanner,

        showInsertAd,           //插屏广告

        startRecord,            //头条：开始录屏
        pauseRecord,            //头条：暂停录屏
        resumeRecord,           //头条：继续录屏
        stopRecord,             //头条：结束录屏
        recordSaved,            //头条：录制视频保存成功
        recordError,            //头条：录屏错误
        shareRecord,            //头条：分享录屏

        navigateToMiniProgram,  //跳转到其他小游戏
        navigateSuccess,        //玩家确认了跳转
        navigateFail,           //玩家取消了跳转
        vibrateShort,           //短震动
        vibrateLong,            //长震动
        hide,                   //游戏进入后台
        show,                   //后台回到游戏
        showInsertByPauseLevel, //暂停游戏，显示插屏(乐游SDK将对其单独处理)
        triggerGC,              //垃圾回收

        //原生广告：
        showNativeAd,           //显示原生广告，需要传入父节点及其他参数
        hideNativeAd,           //隐藏原生广告，需要指定广告类型
        hideAllNativeAd,        //隐藏所有原生广告
        quickShowNativeAd,      //快速显示原生广告，需要传入父节点及其他参数
        quickHideNativeAd,      //快速隐藏原生广告，不刷新广告内容，需要指定广告类型
        showNativeAdSuccess,    //原生广告展示成功，参数：广告对象
        hideNativeAdSuccess,    //原生广告隐藏成功，参数：广告对象
        playerClickedNativeAd,  //玩家成功点击了原生广告进行跳转，参数：广告对象
        playerClosedNativeAd,   //玩家点击关闭了原生广告，参数：广告对象

        //主动分享功能
        shareToFriends,         //分享给好友

        //安卓/苹果端原生包SDK事件：
        callJSVideoSuccess,     //原生回调：视频观看成功
        callJSVideoFail,        //原生回调：视频观看未完成
        callJSVideoError,       //原生回调：视频加载错误
        callJSFullVideoSuccess, //原生回调：全屏视频观看成功
        callJSFullVideoFail,    //原生回调：全屏视频观看未完成
        callJSFullVideoError,   //原生回调：全屏视频加载错误

        //QQ平台：
        showAppBox,             //盒子广告
        showBlockAd,            //积木广告
        hideBlockAd,            //隐藏积木广告
        subscribeMsg,           //订阅
        addColorSign,           //添加彩签

        //OPPO平台添加桌面图标：
        getTableIconState,      //获取是否已添加桌面的结果
        addTableIcon,           //添加桌面图标

    }
    /**UI相关事件，从59,000 开始 */
    export enum UIEvent {
        startIndex = 5000,
        playGoldAnim,           //得到金币动画
        goldAnimPlayFinish,     //金币动画播放完毕
        showTip,                //显示提示信息
        showTouchMask,          //显示触摸遮罩，屏蔽玩家触摸操作
        hideTouchMask,          //隐藏触摸遮罩

        enter,                  //请求进入UI，传递参数UI类型
        entered,                //已进入UI
        exit,                   //请求退出UI
        exited,                 //已退出UI

        touchBannerFinish,      //误触页操作完成
        enterLoadLvUI,          //进入过场动画
        exitLoadLvUI,           //推出过场动画
    }
    /**音效事件，从 6,000 开始 */
    export enum AudioEvent {
        startIndex = 6000,
        playBGM,
        playEffect,
        stopEffect,
        playClickBtn,
        stopBGM,
        changeConfig,
        pause,
        resume,
    }
    /**阿拉丁数据统计事件，从 7,000 开始 */
    export enum ALDEvent {
        startIndex = 7000,
        levelStart,         //关卡开始
        levelWin,           //关卡成功
        levelLose,          //关卡失败
        levelExit,          //中途退出
        sendEvent,          //上报自定义事件
        enterGameFlow,      //上报进入游戏节点
        enterRecommendFlow, //上报进入导流节点
        clickGame,          //点击广告位
        jumpGame,           //跳转广告位
        touchBanner,        //砸蛋
    }
    /**互推相关事件，从 8,000 开始 */
    export enum RecommendEvent {
        startIndex = 8000,
        assetLoadFinish,       //互推配置表加载完成
        clickRecommendItem,     //点击了其他游戏icon
        clickBtnRecommend_TT,   //点击头条平台的更多游戏按钮
        showRecommend,          //显示指定的互推内容
        hideRecommend,          //隐藏互推内容
        showInsteadBannerRecommend, //显示代替banner的广告位
        autoNavigate,           //代码调用，自动弹出跳转游戏确认框

        showLittlePage,         //显示小全导页
        showMiddlePage,         //显示中全导页
        showBigPage,            //显示大全导页
        showRecommendDialog,    //显示互推弹窗
        closeLittlePage,        //关闭了小全屏页
        closeMiddlePage,        //关闭中全导页
        closeBigPage,           //关闭了大全屏页
        closeRecommendDialog,   //关闭了互推弹窗
        showSingleRecommend,    //显示banner样式的广告位
        hideSingleRecommend,    //隐藏banner样式的广告位

        openDrawer,             //打开抽屉
        drawerStartOpen,        //抽屉开始打开动画
        drawerOpened,           //抽屉已打开

        closeDrawer,            //关闭抽屉
        drawerStartClose,       //抽屉开始关闭动画
        drawerClosed,           //抽屉已关闭
    }
    /**玩家资产事件，从 9,000 开始 */
    export enum AssetEvent {
        startIndex = 9000,
        powerChanged,       //体力值变化
        powerUnEnough,      //体力不足提示
        consumePower,       //请求消耗体力执行某事
        getPower,           //得到体力奖励
    }
    /**后台开关事件，从 10,000 开始 */
    export enum AdvertSwitchEvent {
        startIndex = 10000,

        loadConfigSuccess,  //后台配置拉取成功
        changeScene,        //场景切换（显示全屏互推节点并暂停关卡）
        closeFullRecommend, //关闭全屏互推节点，继续关卡运行
        onBtnFadeExit,      //点击假的退出按钮，显示全屏互推节点并暂停关卡
    }
    /**触摸控制器事件，适用于只有一个节点接收触摸操作的场景，从 11,000 开始 */
    export enum CtrlEvent {
        startIndex = 11000,
        ctrlStart,       //关卡开始，开始关卡操作
        ctrlEnd,         //关卡结束，停止关卡操作

        touchStart,         //按下
        touchMove,          //移动
        touchEnd,           //松开
        touchStay,          //持续按住

        btnTouchStart,      //攻击、技能等操作按钮按下
        btnTouchStay,       //按钮持续按住
        btnTouchEnd,        //按钮松开
        btnTouchMove,       //按钮移动
        btnTouchCancel,     //按钮取消
    }
    /**商城相关事件，从 12,000 开始 */
    export enum ShopEvent {
        startIndex = 12000,

        chooseItem,         //选中了商品项

        changeDisplayItem,  //
    }
    /**乐游SDK专属事件，从 13,000 开始 */
    export enum LeYouRecommend {
        startIndex = 13000,
        /**底部猜你喜欢互推 */
        showMoreGameByBanner,
        /**单个图标的互推 */
        showMoreGameByIcon,
        /**更多游戏互推 */
        showMoreGame,
        /**侧边栏互推 */
        showMoreGameSide,
        /**中间水平滚动的互推 */
        showMoreGameMiddle,
    }
    /**数据统计事件，从 14,000 开始 */
    export enum TongJi {
        startIndex = 14000,
        /**用户事件漏斗（进区服事件） */
        appOnce,
        /**分享出日志 */
        sharedOut,
        /**通过分享进入 */
        sharedIn,
        /**视频广告事件 */
        video,
        /**升级 */
        levelUp,
        /**完成任务 */
        task,
        /**自定义行为 */
        action,
        /**充值 */
        pay,
        /**money日志 */
        money,
        /**道具 */
        item,
        /**闯关 */
        battle,
        /**装备日志 */
        equip,
        /**装备升级 */
        equipLevel,
        /**装备升阶 */
        equipDegree,
        /**装备玩法 */
        equipPlayWay,
        /**自定义事件 */
        event,
        /**清除云存储数据 */
        clear,
        /**广告错误日志 */
        error,
        /**解锁皮肤事件 */
        unlockSkin,
    }

    /**柚子互推专属事件，从 15,000 开始 */
    export enum YouZiRecommend {
        startIndex = 15000,
        /**显示全屏落地推广页 */
        showFullScreenIcon,
        /**显示游戏合集 */
        showYouziGameCollectionPage,
    }
    /**游戏流程管理事件，从 16,000 开始 */
    export enum GameFlow {
        startIndex = 16000,
        /**后台配置加载完毕 */
        loadConfigFinish,
        /**切换到指定游戏流程节点 */
        enterGameFlow,
        /**导流流程执行完毕，进入关卡 */
        enterLevel,
        /**广告位跳转失败 */
        navigateFail,
        /**结束第一轮流程 */
        endFirstFlow,
        /**进入首页后再显示弹窗 */
        showInitScene_RecommendDialog,
    }

    /**白鹰SDK专属事件，从 17,000 开始 */
    export enum HeyGameSDK {
        startIndex = 17000,
        /**显示九宫格互推 */
        showMoreGame,
        /**设置用于显示原生广告的节点 */
        initAdNode,
        /**显示首页/关卡中的原生广告（大图或banner） */
        showGameNativeAd,
        /**隐藏首页/关卡中的原生广告 */
        hideGameNativeAd,
        /**显示结算页的原生广告（大图或banner） */
        showFinishNativeAd,
        /**隐藏结算页的原生广告 */
        hideFinishNativeAd,
        /**显示oppo结算原生banner互推接口 */
        showFinishGameBannerAd,
        /**隐藏oppo结算原生banner互推接口 */
        hideFinishGameBannerAd,
        /**点击原生广告*/
        clickNativeAd
    }

    /**教学功能管理事件，懂 18,000 开始 */
    export enum TeachEvents {
        startIndex = 18000,
        /**开始进入教学，显示第一步教学步骤 */
        startTeach,
        /**进入下一步教学 */
        enterNextTeach,
        /**进入指定 id 的教学步骤 */
        enterTeachStepById,
        /**整个教学过程成功完成 */
        teachFinish,
    }

}
